<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test js object</title>
</head>
<body>
    <script>
        var obj = function() {
            var d = 99;
            
            return {
                a: 100,
                b: 99999,
                g: { 
                    b: (function() {
                        return this.b;
                    })()
                },
                c: (function() {
                    return this.a;
                })(),
                e: function() {
                    return d;
                }
            };
        };
        
        var o = obj();
        console.log(o);    
        console.log(o.d);
        console.log(o.g.b);
        console.info(o.e());
        console.log(o.c());   
        
        var o = {
            a : "abc",
            b : {
                c : function() {
                    alert(this.a);
                    //这里的this指向的不是o而是b，所以this是没有a属性的，这里应该弹出undefined
                    //不要用o.a调用
                }
            }
        };
        o.b.c();
        怎样才能在c方法中调用a属性？
            o.b.c.call(o)
            
            
        var o = {
            a:"abc",
            b:{
                c:function(){
                    alert(this.a);
                }
            },
            d:function(){
                this.b.c.call(this);//这样就行了
            }
        };

    </script>
</body>
</html>